//
//  GYStatusViewModel.swift
//  Weibo
//
//  Created by vane on 16/8/13.
//  Copyright © 2016年 apple. All rights reserved.
//

import UIKit

class GYStatusViewModel: NSObject {
    
    var statusModel: GYStatusModel?
    
    // 微博等级图片
    var mbrankImage: UIImage?
    
    // 微博认证图片
    var verifiedImage: UIImage?
    
    // 微博来源
    var sinaSourceStr: String?
    
    // 转发
    var repostsCountStr: String?
    // 评论
    var commentsCountStr: String?
    // 赞
    var attitudesCountStr: String?
    
    var sinaTimeStr: String?{
        return dealSinaTimeStr((statusModel?.created_at)!)
    }

    
    init(statusModel: GYStatusModel) {
        super.init()
        
        self.statusModel = statusModel
        
        mbrankImage = dealMbrankImage(statusModel.user?.mbrank ?? 0)
        
        verifiedImage = dealVerifiedImage(statusModel.user?.verified ?? -1)
        
        sinaSourceStr = dealSinaSourceStr(statusModel.source ?? "")

        repostsCountStr = getSinaCountStr(statusModel.reposts_count ?? 0, title: "转发")
        
        commentsCountStr = getSinaCountStr(statusModel.comments_count ?? 0, title: "评论")
        
        attitudesCountStr = getSinaCountStr(statusModel.attitudes_count ?? 0, title: "赞")
    }
    
}
//微博时间
extension GYStatusViewModel{
    
    /*
    - 时间格式化
    - 如果微博时间和当前时间比较
    -如果是今年
    - 如果是今天
    - 如果小于60秒  显示 刚刚
    - 如果大于等于60 && 小于3600  显示 xx分钟前
    - 其他   显示  xx小时前
    - 如果是昨天
    -  2016年08月14日 20:20:20  显示   昨天 20:20
    
    - 如果不是今年
    -  2014年06月14日 20:20:20  显示 2014年06月14日 20:20
    */
    func dealSinaTimeStr(createAt: String) -> String{
        
        //    print(createAt)
        //时间格式化
        let df = NSDateFormatter()
        //格式 Mon Aug 15 15:52:05 +0800 2016
        df.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        //本地化
        df.locale = NSLocale(localeIdentifier: "en_US")
        //微博时间
        let sinaDate = df.dateFromString(createAt)!
        
        //         let sinaDate = sinaDate1.dateByAddingTimeInterval(-3600*2*10*365)
        //是否是今年
        let isThisYear = sinaIsThisYear(sinaDate)
        
        if isThisYear {
            //日历类
            let calendar = NSCalendar.currentCalendar()
            //如果是今天
            if calendar.isDateInToday(sinaDate) {
                //当前时间和微博时间求差
                let s = Int(NSDate().timeIntervalSinceDate(sinaDate))
                //如果小于60秒  显示 刚刚
                if s < 60 {
                    return "刚刚"
                    //如果大于等于60 && 小于3 600  显示 xx分钟前
                }else if s >= 60 && s < 3600 {
                    return "\(s/60)分钟前"
                }else{
                    return "\(s/3600)小时前"
                }
                //如果是昨天
                //2016年08月14日 20:20:20  显示   昨天 20:20
            }else if calendar.isDateInYesterday(sinaDate){
                
                df.dateFormat = "昨天 HH:mm"
            }else{
                //2016年06月14日 20:20:20  显示    06月14日 20:20
                df.dateFormat = "MM月dd日 HH:mm"
            }
            
            
        }else{
            //如果不是今年
            //2014年06月14日 20:20:20  显示 2014年06月14日 20:20
            
            df.dateFormat = "yyyy年MM月dd日 HH:mm"
            
        }
        return df.stringFromDate(sinaDate)
        
    }
    // 判断是否是今年
    func sinaIsThisYear(sinaDate: NSDate) -> Bool{
        
        let df = NSDateFormatter()
        
        df.dateFormat = "yyyy"
        
        df.locale = NSLocale(localeIdentifier: "en_US")
        //微博字符串
        let sinaTimeStr = df.stringFromDate(sinaDate)
        //当前时间
        let currentTimeStr = df.stringFromDate(NSDate())
        
        return sinaTimeStr == currentTimeStr
        
    }

}
//转发评论赞
extension GYStatusViewModel{
    
    func getSinaCountStr(count: Int, title: String) -> String{
        
        if count <= 0 {
            
            return title
        }else if count > 0 && count < 10000 {
            
            return "\(count)"
        }else{
            
            let num = CGFloat(count/1000)/10
            
            var numStr = "\(num)万"
            
            if numStr.containsString(".0"){
                
              numStr = numStr.stringByReplacingOccurrencesOfString(".0", withString: "")
            }
            
            return numStr
        }
    }
    
    
}

//微博来源
extension GYStatusViewModel{
    
    func dealSinaSourceStr(source: String) -> String{
       
        if source.containsString("\">") {
            
            let startRange = source.rangeOfString("\">")!
            
            let endRange = source.rangeOfString("</")!
            
            let result = source.substringWithRange(startRange.endIndex..<endRange.startIndex)
            
            return "来自 \(result)"
        }
        return "来自 上午是哪个是"
    }
    
}

// 处理cell中数据的逻辑
extension GYStatusViewModel{
    // 处理微博等级image/// 会员等级 1-6
    func dealMbrankImage(mbrank: Int) -> UIImage?{
        if mbrank > 0 && mbrank < 7 {
            return UIImage(named: "common_icon_membership_level\(mbrank)")
        }
        return UIImage(named: "common_icon_membership")
    }
    
    // 处理微博用户认证image/// 认证类型 -1：没有认证，1，认证用户，2,3,5: 企业认证，220: 达人
    func dealVerifiedImage(verified: Int) -> UIImage?{
        switch verified{
        case 1:
            return UIImage(named: "avatar_vip")
        case 2,3,5:
            return UIImage(named: "avatar_enterprise_vip")
        case 220:
            return UIImage(named: "avatar_grassroot")
        default:
            return UIImage(named: "avatar_vgirl")
        }
    }
}
